package com.share.util.thread;

/**
 * ThreadLocal 工具类
 * 根据不同类型 单独编写不同的类
 */
public class ThreadLocalUtils {
    // 使用原始类型的ThreadLocal，但在方法级别进行类型转换
    private static final ThreadLocal<Object> THREAD_LOCAL = new ThreadLocal<>();

    // 根据键获取值
    @SuppressWarnings("unchecked")
    public static <T> T get() {
        return (T) THREAD_LOCAL.get();
    }

    // 存储键值对
    public static <T> void set(T value) {
        THREAD_LOCAL.set(value);
    }

    // 清除ThreadLocal 防止内存泄漏
    public static void remove() {
        THREAD_LOCAL.remove();
    }
}